/// To whoever continues this. May God have mercy on your soul.

using UnityEngine;
using System.Collections;

public class QuestionList : MonoBehaviour 
{
	public static QuestionList Instance;
	
	#region QUIZZES
	
		public enum QUIZ_TYPE
		{
			CHOOSE_COLOR_SHAPE, 	//done
			MATH_PROBLEMS,			//done
			MAZES,					//done
			COUNT_THE_SHAPE,		//done
			FEED_THE_FRUIT,			//done
			DRAW_A_SHAPE,			//done with bugs
			SORT_THE_SHAPE,			//done
			WHICH_DOES_NOT_BELONG, 	//done
			REPEAT_THE_COMMANDS,	//done
			WHAT_DID_HE_SAY,		//done
			WHAT_RHYMES_WITH,		//done
			
			DEFAULT
		};
		
		public QUIZ_TYPE quizType 				= QUIZ_TYPE.DEFAULT;
		public UIPanel[] quizPanels				= default ( UIPanel[] );
		public GameObject[] quizzes;
		
		private int quizRange					= 0;
		private int quizIndex					= 11;
	
		private int tempQuizIndex				= default ( int );
		
		public void GenerateRandomQuiz ()
		{
			tempQuizIndex = quizRange;
			quizRange = Random.Range( 0 , quizIndex );
			
			if ( quizRange == tempQuizIndex )
				quizRange = Random.Range( 0 , quizIndex );
		
//			quizRange = 2; // temporary
			
			switch ( quizRange )
			{
				case 0:
					StartCoroutine ( ActivatePanels (0) ) ;
					quizType = QUIZ_TYPE.CHOOSE_COLOR_SHAPE;
			
				break;
				
				case 1:
					StartCoroutine ( ActivatePanels (1) ) ;
					quizType = QUIZ_TYPE.MATH_PROBLEMS;
			
				break;
				
				case 2:
					StartCoroutine ( ActivatePanels (2) ) ;
					quizType = QUIZ_TYPE.MAZES;
				break;
				
				case 3:
					StartCoroutine ( ActivatePanels (3) ) ;
					quizType = QUIZ_TYPE.COUNT_THE_SHAPE;
				
				break;
				
				case 4:
					StartCoroutine ( ActivatePanels (4) ) ;
					quizType = QUIZ_TYPE.FEED_THE_FRUIT;
			
				break;
				
				case 5:
					StartCoroutine ( ActivatePanels (5) ) ;
					
				  	quizType = QUIZ_TYPE.DRAW_A_SHAPE; 
					
			
				break;
				
				case 6:
					StartCoroutine ( ActivatePanels (6) );
					quizType = QUIZ_TYPE.SORT_THE_SHAPE;
			
				break;
				
				case 7:
					StartCoroutine ( ActivatePanels (7) ) ;
					quizType = QUIZ_TYPE.WHICH_DOES_NOT_BELONG;
			
				break;
				
				case 8:
					StartCoroutine ( ActivatePanels (8) ) ;
					quizType = QUIZ_TYPE.REPEAT_THE_COMMANDS;
					DisableButtons (); //disable buttons
					commandStart.collider.enabled = true;
			
				break;
				
				case 9:
					StartCoroutine ( ActivatePanels (9) ) ;
					quizType = QUIZ_TYPE.WHAT_DID_HE_SAY;
			
				break;
				
				case 10:
					StartCoroutine ( ActivatePanels (10) ) ;
					quizType = QUIZ_TYPE.WHAT_RHYMES_WITH;
			
				break;
				
			}
			
			QuestionManager.Instance.CallQuiz();
			
		}
		
		IEnumerator ActivatePanels ( int activePanel )
		{
		   	yield return new WaitForEndOfFrame();
		
			for ( int i = 0; i < quizIndex; i++)
			{
				if ( i != activePanel )
				{
					quizPanels[i].gameObject.SetActive (false);
				}
				else
				{
					quizPanels[i].gameObject.SetActive (true);
				}
			}

		}
	
	#endregion
	
	#region COLORED SHAPE
	
		private enum COLOR_SHAPE
		{
			BLUE_TRIANGLE 					= 0,
			RED_SQUARE 						= 1,
			YELLOW_STAR						= 2,
			GREEN_CIRCLE					= 3,
			ORANGE_HEXAGON					= 4,
			PURPLE_RECTANGLE 				= 5,
			BLACK_OCTAGON					= 6,
			WHITE_PENTAGON					= 7,
		};
	
		private COLOR_SHAPE colorShape 		= COLOR_SHAPE.BLUE_TRIANGLE;
	
		public string[] colorShapes	 		= {	"Triangle" 	, 
												"Square"	, 
												"Star"     	, 
												"Circle"   	, 
												"Hexagon"  	,  
												"Rectangle"	, 
												"Octagon"  	, 
												"Pentagon"	};
	
		private int colorShapeRange			= 0;
		public string colorShapeObject		= default(string);
		private string colorShapeProblem	= default(string);
		public string colorShapeQuestion	= default(string);
	
		public int colorShapeRandom			= 0;
	
		public void GenerateColorShapeQuiz ()
		{
			colorShapeRange = Random.Range( 0 , colorShapes.Length );
			
			switch ( colorShapeRange )
			{
			case 0:
					colorShape = COLOR_SHAPE.BLUE_TRIANGLE;
					colorShapeProblem = "Blue Triangle";
				break;
			
			case 1:
					colorShape = COLOR_SHAPE.RED_SQUARE;
					colorShapeProblem = "Red Square";
				break;
			
			case 2:
					colorShape = COLOR_SHAPE.YELLOW_STAR;
					colorShapeProblem = "Yellow Star";
				break;
			
			case 3:
					colorShape = COLOR_SHAPE.GREEN_CIRCLE;
					colorShapeProblem = "Green Circle";
				break;
			
			case 4:
					colorShape = COLOR_SHAPE.ORANGE_HEXAGON;
					colorShapeProblem = "Orange Hexagon";
				break;
			
			case 5:
					colorShape = COLOR_SHAPE.PURPLE_RECTANGLE;
					colorShapeProblem = "Purple Rectangle";
				break;
			
			case 6:
					colorShape = COLOR_SHAPE.BLACK_OCTAGON;
					colorShapeProblem = "Black Octagon";
				break;
			
			case 7:
					colorShape = COLOR_SHAPE.WHITE_PENTAGON;
					colorShapeProblem = "White Pentagon";
				break;
			}
		
			colorShapeRandom = (int)colorShape;
			colorShapeObject = colorShapes[(int)colorShape];
			colorShapeQuestion = "Choose the " + colorShapeProblem;
		
		}
	
	#endregion
	
	#region MATH QUIZ
	
		private int mathOperator 			= 0;
		private int firstVariable 			= 0;
		private int secondVariable 			= 0;
		public int mathQuizAnswer 			= 0;
		private string mathProblem			= default(string);
		public string mathQuestion			= default(string);
	
		public void GenerateMathQuiz ()
		{
			mathOperator = Random.Range( 0 , 4 );
			firstVariable = Random.Range( 1 , 10 );
			secondVariable = Random.Range( 1 , 10 );
			
			switch ( mathOperator )
			{
			case 0: 
					mathProblem = firstVariable + " + " + secondVariable;
					mathQuizAnswer = firstVariable + secondVariable;
				break;
			case 1:
					mathProblem = firstVariable + " - " + secondVariable;
					mathQuizAnswer = firstVariable - secondVariable;
				break;
			case 2:
					mathProblem = firstVariable + " x " + secondVariable;
					mathQuizAnswer = firstVariable * secondVariable;
				break;
			case 3:
					firstVariable = firstVariable * secondVariable;
					mathProblem = firstVariable + " / " + secondVariable;
					mathQuizAnswer = firstVariable / secondVariable;
				break;
			}
			
			mathQuestion = "What is " + mathProblem + " ?";
		}
	
	#endregion
	
	#region MAZES
	public GameObject[] Mazes;
	private int mazeIndex 	= default(int);
	
	public void GenerateMazeQuiz ()
	{
		mazeIndex = Random.Range ( 0 , 6 );
		StartCoroutine ( ActivateMazes ( mazeIndex ) );
	}
	
	IEnumerator ActivateMazes ( int activeMaze )
	{
	   	yield return new WaitForEndOfFrame ();
	
		for ( int i = 0; i < 6; i++)
		{
			if ( i != activeMaze )
			{
				Mazes[i].SetActive (false);
			}
			else
			{
				Mazes[i].SetActive (true);
			}
		}
	}
	#endregion
	
	#region COUNT THE SHAPES
		private enum COUNT_SHAPE
		{
			BLUE_TRIANGLE 					= 0,
			RED_SQUARE 						= 1,
			YELLOW_STAR						= 2,
			GREEN_CIRCLE					= 3,
			ORANGE_HEXAGON					= 4,
			PURPLE_RECTANGLE 				= 5,
			BLACK_OCTAGON					= 6,
			WHITE_PENTAGON					= 7,
		};
	
		private COUNT_SHAPE countShape 		= COUNT_SHAPE.BLUE_TRIANGLE;
	
		public string[] countShapes	 		= {	"Triangle" 	, 
												"Square"	, 
												"Star"     	, 
												"Circle"   	, 
												"Hexagon"  	,  
												"Rectangle"	, 
												"Octagon"  	, 
												"Pentagon"	};
	
		private int countShapeRange			= 0;	
		private int maxCountShape			= 15;
		private int countCounter			= default(int);
	
		public UISprite[] maxCountSprites	= default(UISprite[]);
	
		public int countShapeAnswer 		= 0;
		private string[] countShapeObject	= new string[15];
	
		private string countShapeString		= default(string);
		private string countShapeProblem	= default(string);
		public string countShapeQuestion	= default(string);
	
		public int countShapeRandom			= 0;
	
		public void GenerateCountShapeQuiz ()
		{
			countCounter = 0;
			countShapeRange = Random.Range( 0 , countShapes.Length );
			countShapeAnswer = Random.Range( 0, maxCountShape );
		
			switch ( countShapeRange )
			{
			case 0:
					countShape = COUNT_SHAPE.BLUE_TRIANGLE;
					colorShapeProblem = "Blue Triangle";
					
				break;
			
			case 1:
					countShape = COUNT_SHAPE.RED_SQUARE;
					colorShapeProblem = "Red Square";
			
				break;
			
			case 2:
					countShape = COUNT_SHAPE.YELLOW_STAR;
					colorShapeProblem = "Yellow Star";
			
				break;
			
			case 3:
					countShape = COUNT_SHAPE.GREEN_CIRCLE;
					colorShapeProblem = "Green Circle";
			
				break;
			
			case 4:
					countShape = COUNT_SHAPE.ORANGE_HEXAGON;
					colorShapeProblem = "Orange Hexagon";
			
				break;
			
			case 5:
					countShape = COUNT_SHAPE.PURPLE_RECTANGLE;
					colorShapeProblem = "Purple Rectangle";
			
				break;
			
			case 6:
					countShape = COUNT_SHAPE.BLACK_OCTAGON;
					colorShapeProblem = "Black Octagon";
			
				break;
			
			case 7:
					countShape = COUNT_SHAPE.WHITE_PENTAGON;
					colorShapeProblem = "White Pentagon";
			
				break;
			}
			
			for ( int i = 0; i < maxCountShape; i++)
			{
				if ( countCounter <= countShapeAnswer )
					countShapeObject[i] = countShapes[(int)countShape];
				else
				{
					if( ((int)countShape + 1) < countShapes.Length )
						countShapeObject[i] = countShapes[(int)countShape + 1];
					else
						countShapeObject[i] = countShapes[(int)countShape - 1];
				}
			
				countCounter++;
			}
		
			ArrayList countShapesArray = RandomNumbers(15);
		
			for ( int j = 0; j < maxCountShape; j++)
			{
				maxCountSprites[(int)countShapesArray[j]].spriteName = countShapeObject[j];
			}
			
			colorShapeQuestion = "Count the " + colorShapeProblem;
		}
	
	#endregion
	
	#region FEED THE FRUIT
	
	public string[] feedFruit			= {	"apple" 	 , 
											"banana"	 , 
											"grape"      , 
											"orange"   	 ,  
											"pineapple"	 , 
											"pomegranate", 
											"strawberry" ,
											"watermelon" };
		
	public int feedFruitAnswer 				= default(int);
	public int feedFruitRange				= default(int);
	private string feedFruitProblem			= default(string);
	public string feedFruitQuestion			= default(string);
	
	
	public void GenerateFeedFruitQuiz ()
	{
		feedFruitAnswer = Random.Range( 0, feedFruit.Length );
		feedFruitRange = feedFruit.Length;
		feedFruitProblem = feedFruit[feedFruitAnswer]; 
		
		feedFruitQuestion = "Feed the " + feedFruitProblem + " to the old man.";
	}
	
	#endregion
	
	#region DRAW A SHAPE
	
	public GameObject[] drawShapes		= default(GameObject[]);
	
	private string[] drawShapeNames		= { "Triangle" ,
											"Square"   ,
											"Pentagon" ,
											"Hexagon"  ,
											"Heptagon" ,
											"Octagon"  };
	
	public int[] drawShapeNodes			= { 3 ,
											4 ,
											5 ,
											6 ,
											7 ,
											8  };
	
	public string drawShapeQuestion		= default ( string );
	public int drawShapeIndex 			= default ( int );
	
	public bool[] nodeCount				= default ( bool [] );
	public int nodeIndex				= 0;
	
	public void GenerateDrawShapeQuiz ()
	{	
		
		nodeIndex = 0;
		drawShapeIndex = Random.Range ( 0 , drawShapeNames.Length );
		
		nodeCount = new bool [ drawShapeNodes[drawShapeIndex] + 1 ];
		nodeCount[0] = true;
		
		InstantiateShapes.Instance.InstantiateShape ( drawShapeIndex ); 
//		LineConnector.Instance.DrawShape ();
		
		drawShapeQuestion = "Connect the dots to draw a " + drawShapeNames[drawShapeIndex] ;
	}
	#endregion
	
	#region REPEAT THE COMMANDS
	public UISprite[] commandSprites	= default (UISprite[]);
	public UISprite commandStart		= default (UISprite);
	
	public int[] commands				= new int[4];
	private int commandIndex 			= 0;
	
	public void GenerateCommandQuiz()
	{
		ArrayList commandGiven = RandomNumbers(4);
		
		for ( int i = 0; i < 4; i++ )	
			commands[i] = (int)commandGiven[i];
		CallPressAnimation (commandIndex);
	}
	
	public void DisableButtons ()
	{
		for ( int i = 0; i < 4; i++ )
		{
			commandSprites[i].collider.enabled = false;
			commandSprites[i].GetComponent<UIButtonColor>().OnButtonEnable(false);	
		}
	}
	
	void EnableButtons ()
	{
		for ( int i = 0; i < 4; i++ )
		{
			commandSprites[i].collider.enabled = true;
			commandSprites[i].GetComponent<UIButtonColor>().OnButtonEnable(true);	
		}
	}
	
	void CallPressAnimation (int index)
	{
		commandStart.collider.enabled = false;
		commandIndex = 0;
		StartCoroutine(SimulatePressAnimation());
	}
		
	public IEnumerator SimulatePressAnimation ()
	{
		float endTime		= 0.5f;
		float startTime 	= 0.0f;
		
		while ( endTime > startTime )
		{
			startTime += Time.deltaTime;
//			StartCoroutine(commandSprites[commands[commandIndex]].GetComponent<UIButtonScale>().OnChangeScale(true));
			StartCoroutine(commandSprites[commands[commandIndex]].GetComponent<UIButtonColor>().OnChangeColor(true));	
			
			yield return 0;	
		}
			
		commandIndex++;
		StartCoroutine(SimulatePressAnimation2());
	}
	
	public IEnumerator SimulatePressAnimation2 ()
	{
		float endTime		= 0.5f;
		float startTime 	= 0.0f;
		
		while ( endTime > startTime )
		{
			startTime += Time.deltaTime;
			StartCoroutine(commandSprites[commands[commandIndex]].GetComponent<UIButtonColor>().OnChangeColor(true));	
			yield return 0;	
		}
	
		commandIndex++;
		StartCoroutine(SimulatePressAnimation3());
	}
	
	public IEnumerator SimulatePressAnimation3 ()
	{
		float endTime		= 0.5f;
		float startTime 	= 0.0f;
		
		while ( endTime > startTime )
		{
			startTime += Time.deltaTime;
			StartCoroutine(commandSprites[commands[commandIndex]].GetComponent<UIButtonColor>().OnChangeColor(true));	
			yield return 0;	
		}
		
		commandIndex++;
		StartCoroutine(SimulatePressAnimation4());
	}
	
	public IEnumerator SimulatePressAnimation4 ()
	{
		float endTime		= 0.5f;
		float startTime 	= 0.0f;
		
		while ( endTime > startTime )
		{
			startTime += Time.deltaTime;
			StartCoroutine(commandSprites[commands[commandIndex]].GetComponent<UIButtonColor>().OnChangeColor(true));	
			yield return 0;	
		}
		
		EnableButtons ();
	}

	
	#endregion
	
	#region SORT THE SHAPE
	
	private enum SORT_SHAPE
	{
		CIRCLE									= 0,
		HEXAGON									= 1,
		OCTAGON									= 2,
		PENTAGON								= 3,
		RECTANGLE 								= 4,
		SQUARE 									= 5,
		STAR									= 6,
		TRIANGLE 								= 7,
	};
	
	public string[] sortedShapes				= {	"Circle"   	, 
													"Hexagon"  	,  
													"Octagon"  	, 
													"Pentagon"	,
													"Rectangle"	, 
													"Square"	, 
													"Star"     	, 
													"Triangle" 	};
	
	
	public string[] sortShapesAnswer 			= new string[4];
	public string sortShapesQuestion			= default(string);
	
	public void GenerateSortShapesQuiz ()
	{
		ArrayList sortShapeGenerator = QuestionList.Instance.RandomNumbers(8);
		sortShapesQuestion = "Sort the Shapes\n Alphabetically!";
		
		for ( int i = 0; i < sortShapesAnswer.Length; i++ )
		{
			sortShapesAnswer[i] = sortedShapes[(int)sortShapeGenerator[i]];
		}
		
	}
	
	#endregion
	
	#region WHICH DOES NOT BELONG
	public string[] notBelongFruit	= {	"apple" 	 , 
										"banana"	 , 
										"grape"      , 
										"orange"   	 ,  
										"pineapple"	 , 
										"pomegranate", 
										"strawberry" ,
										"watermelon" };
	
	public string[] notBelongShapes	= {	"Triangle" 	, 
										"Square"	, 
										"Star"     	, 
										"Circle"   	, 
										"Hexagon"  	,  
										"Rectangle"	, 
										"Octagon"  	, 
										"Pentagon"	};
	

	
	public int notBelongValue			= 0;
	public int notBelongType			= 0;
	public int notBelongTypeRange		= 0;
	private int notBelongRange			= 0;
	
	private string notBelongProblem		= default(string);
	public string notBelongObject		= default(string);
	public string notBelongQuestion		= default(string);

	public void GenerateNotBelongQuiz ()
	{
		notBelongType = Random.Range(0,2);

		if ( notBelongType  == 0 )
		{
			//SHAPES
			notBelongTypeRange = notBelongShapes.Length;
			notBelongRange = Random.Range( 0, notBelongShapes.Length );	
			
			switch ( notBelongRange )
			{
			case 0: 
				notBelongProblem = notBelongShapes[0];
				break;
				
			case 1:
				notBelongProblem = notBelongShapes[1];
				break;
				
			case 2:
				notBelongProblem = notBelongShapes[2];
				break;
				
			case 3:
				notBelongProblem = notBelongShapes[3];
				break;
				
			case 4:
				notBelongProblem = notBelongShapes[4];
				break;
				
			case 5:
				notBelongProblem = notBelongShapes[5];
				break;
				
			case 6:
				notBelongProblem = notBelongShapes[6];
				break;
				
			case 7:
				notBelongProblem = notBelongShapes[7];
				break;
			}
			
		}
		
		if( notBelongType  == 1 )
		{
			//FRUITS
			notBelongTypeRange = notBelongFruit.Length;
			notBelongRange = Random.Range( 0, notBelongFruit.Length );
			
			switch ( notBelongRange )
			{
			case 0: 
				notBelongProblem = notBelongFruit[0];
				break;
				
			case 1:
				notBelongProblem = notBelongFruit[1];
				break;
				
			case 2:
				notBelongProblem = notBelongFruit[2];
				break;
				
			case 3:
				notBelongProblem = notBelongFruit[3];
				break;
				
			case 4:
				notBelongProblem = notBelongFruit[4];
				break;
				
			case 5:
				notBelongProblem = notBelongFruit[5];
				break;
				
			case 6:
				notBelongProblem = notBelongFruit[6];
				break;
				
			case 7:
				notBelongProblem = notBelongFruit[7];
				break;
				
			case 8:
				notBelongProblem = notBelongFruit[8];
				break;
			}
		}

		notBelongObject = notBelongProblem;
		notBelongValue = notBelongRange;
		notBelongQuestion = "Which does not belong?";
		
		
	}
	#endregion
	
	#region WHAT DID HE SAY
	
//	private enum SPOKEN_WORD
//	{
//		AMAZING									= 0,
//		BEAUTIFUL								= 1,
//		EVIL									= 2,
//		THISISFUN								= 3,
//	};
	
//	public int[] spokenWordAnswer 				= new int[5];
	
	public AudioClip[] spokenWords				= default(AudioClip[]);
	
	public string[] spokenWordString			= { "Amazing"		,
													"Beautiful"		,
													"Evil"			,
													"This is Fun!" 	};
	
	public string spokenWordQuestion			= default(string);
	public int spokenWordNumber					= default(int);
	
	
	public void GenerateSpokenWordQuiz ()
	{
		spokenWordNumber = Random.Range( 0 , spokenWordString.Length );
		spokenWordQuestion = "Listen Carefully";
	}
	
	#endregion
	
	#region WHAT RHYMES WITH X
	
	public string[] rhymes1 	= 	{ "back"  ,
									  "fail"  ,
									  "care"  ,
									  "bake"  ,
									  "ball"  ,
									  "fan"   ,
									  "band"  ,
									  "map"   ,
									  "car"   ,
									  "fat"   ,
									  "late"  ,
									  "bed"   ,
									  "smell" ,
									  "men"   ,
								 	  "wet"   ,
									  "thin"  ,
									  "sing"  ,
									  "sit"   ,
									  "white" ,
									  "blow"  ,
									  "hot"   ,
									  "ground",
									  "nose"  ,
									  "rub"   ,
									  "fun"   };
	
	public string[] rhymes2		= 	{ "sack"  ,
									  "mail"  ,
									  "dare"  ,
									  "fake"  ,
									  "hall"  ,
									  "man"	  ,
									  "hand"  ,
									  "nap"   ,
									  "far"   ,
									  "rat"   ,
									  "date"  ,
									  "fed"   ,
									  "fell"  ,
									  "hen"   ,
								 	  "pet"   ,
									  "chin"  ,
									  "ring"  ,
									  "kit"   ,
									  "knight",
									  "crow"  ,
									  "pot"   ,
									  "hound" ,
									  "toes"  ,
									  "tub"   ,
									  "sun"   };
	
	public int rhymeIndex		= 0;
	private int rhymeNumber		= 0;
	public int rhymeLength		= 0;
	
	private string rhymeWord1	= default(string);
	private string rhymeWord2	= default(string);
	
	private string rhymeProblem = default(string);
	public string rhymeAnswer 	= default(string);
	public string rhymeQuestion	= default(string);
	
	public void GenerateWhatRhymesQuiz ()
	{
		//generate the rhymes
		rhymeIndex = Random.Range( 0 , rhymes1.Length );
		
		rhymeLength = rhymes1.Length;
		
		rhymeWord1 = rhymes1[ rhymeIndex ];
		rhymeWord2 = rhymes2[ rhymeIndex ];
		
		//generate which Rhyme Questions
		rhymeNumber = Random.Range( 0, 2 );
		switch ( rhymeNumber )
		{
			case 0:
				rhymeProblem = rhymeWord1;
				rhymeAnswer = rhymeWord2;
			break;
	
			case 1:
				rhymeProblem = rhymeWord2;
				rhymeAnswer = rhymeWord1;
			break;
		}
		
		rhymeQuestion = "What Rhymes with " + rhymeProblem + " ?";
	}
	
	#endregion
	
	#region RANDOM ANSWERS
	public ArrayList RandomNumbers(int max)
    {
        ArrayList lstNumbers = new ArrayList();
        int number = Random.Range(0 , max);
        lstNumbers.Add(number);
        int count = 0;

        do
        {
            number = Random.Range(0 , max);
            if (!lstNumbers.Contains(number))
            {
                lstNumbers.Add(number);
            }
            count++;
        } while (count <= 10 * max);
		
        return lstNumbers;
    }
	#endregion
	
	void Awake ()
	{
		Instance = this;
	}
	
}
